package com.bmob.lover.viewmodel.base

import com.bmob.lover.app.ext.getTableName
import com.bmob.lover.app.util.CacheUtil
import com.bmob.lover.app.util.getCurrentUser
import com.bmob.lover.data.model.bean.User
import com.theone.mvvm.core.base.viewmodel.BaseRequestViewModel
import rxhttp.wrapper.utils.getActualTypeParameter
import java.lang.reflect.Type


//  ┏┓　　　┏┓
//┏┛┻━━━┛┻┓
//┃　　　　　　　┃
//┃　　　━　　　┃
//┃　┳┛　┗┳　┃
//┃　　　　　　　┃
//┃　　　┻　　　┃
//┃　　　　　　　┃
//┗━┓　　　┏━┛
//    ┃　　　┃                  神兽保佑
//    ┃　　　┃                  永无BUG！
//    ┃　　　┗━━━┓
//    ┃　　　　　　　┣┓
//    ┃　　　　　　　┏┛
//    ┗┓┓┏━┳┓┏┛
//      ┃┫┫　┃┫┫
//      ┗┻┛　┗┻┛
/**
 * @author The one
 * @date 2021/2/25 0025
 * @describe 请求ViewModel基类
 * @email 625805189@qq.com
 * @remark
 */
abstract class BaseBmobRequestViewModel<T> : BaseRequestViewModel<T>() {

    var mUser: User? = getCurrentUser()
    var mLover :User? = CacheUtil.getLover()
    var isBindLover = false

    // 泛型类型
    val mType: Type = getActualTypeParameter(this::class.java, 0)

    // 表名
    var mTableName: String

    init {
        // 拿到泛型T的类名
        mTableName = mType.getTableName()
        isBindLover = null != mLover
    }

    protected open fun getUrl() = "/1/classes/$mTableName"

}
